package pe.gob.onpe.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import pe.gob.onpe.ctrlNegocio.CNPrepararEleccion;
import pe.gob.onpe.pojo.ProcesoElectoralPojo;
import pe.gob.onpe.pojo.VistaComparaPadronPojo;
import pe.gob.onpe.util.Funciones;
import pe.gob.onpe.util.PARAMETROS;
import pe.gob.onpe.util.ServiceLocator;

public class CompararPadronElectoralAction extends DispatchAction{
	
	private CNPrepararEleccion oCNPrepararEleccion = (CNPrepararEleccion)ServiceLocator.getInstance().getLocal(PARAMETROS.CNPrepararEleccion);
	
	public ActionForward mostrarCompararPadronElectoral(ActionMapping mapping, 
														ActionForm form,
														HttpServletRequest request, 
														HttpServletResponse response) throws Exception {
		
		Long id = Funciones.obtenerProcesoElectoralId(request);
		
		ProcesoElectoralPojo oProcesoElectoral	= oCNPrepararEleccion.obternerProcesoElectoral(id);
		Long cantidadRegistrosPadronElectoral	= oCNPrepararEleccion.obtenerCantidadRegistrosPadronElectoral();
		Long cantidadRegistrosPadronSolicitante	= oCNPrepararEleccion.obtenerCantidadRegistrosPadronSolicitante(id);
		String 					fechaPadronONPE = oCNPrepararEleccion.obtenerFechaPadronONPE();
		
		request.setAttribute("cantidadRegistroPadronElectoral", cantidadRegistrosPadronElectoral);
		request.setAttribute("cantidadRegistrosPadronSolicitante", cantidadRegistrosPadronSolicitante);
		request.setAttribute("fechaPadronSolicitante", oProcesoElectoral.getFechaCargaPadron());
		request.setAttribute("fechaPadronONPE", fechaPadronONPE);
		request.setAttribute("visible", "hidden");
		
		return mapping.findForward("mostrarCompararPadronElectoral");
	}
		
	public ActionForward cargarComparacionPadron(ActionMapping mapping, 
													ActionForm form,
													HttpServletRequest request, 
													HttpServletResponse response) throws Exception {
		
		Long id = Funciones.obtenerProcesoElectoralId(request);
		
		ProcesoElectoralPojo		oProcesoElectoral	= oCNPrepararEleccion.obternerProcesoElectoral(id);
		Long 		cantidadRegistrosPadronElectoral	= oCNPrepararEleccion.obtenerCantidadRegistrosPadronElectoral();
		Long 		cantidadRegistrosPadronSolicitante	= oCNPrepararEleccion.obtenerCantidadRegistrosPadronSolicitante(id);
		List<VistaComparaPadronPojo> listaComparaPadron = oCNPrepararEleccion.obtenerComparacionPadron(id);		
		String 							fechaPadronONPE	= oCNPrepararEleccion.obtenerFechaPadronONPE();
		Long 				cantidadRegistrosProcesados = oCNPrepararEleccion.obtenerCantidadRegistrosComparadosEleccion(id);
		
		String mensajeProceso = "Se procesaron "+cantidadRegistrosProcesados+" de "+cantidadRegistrosProcesados+" registros"; 
		String mensajeUsuario = "El proceso finalizo con exito";
		
		request.setAttribute("cantidadRegistroPadronElectoral", cantidadRegistrosPadronElectoral);
		request.setAttribute("cantidadRegistrosPadronSolicitante", cantidadRegistrosPadronSolicitante);
		request.setAttribute("fechaPadronSolicitante", oProcesoElectoral.getFechaCargaPadron());
		request.setAttribute("fechaPadronONPE", fechaPadronONPE);
		request.setAttribute("listaComparaPadron",listaComparaPadron);
		request.setAttribute("visible", "visible");
		request.setAttribute("mensajeProceso", mensajeProceso);
		request.setAttribute("mensajeUsuario", mensajeUsuario);
		
		return mapping.findForward("mostrarCompararPadronElectoral");
	}
	
	public ActionForward mostrarReporteComparaPadron(ActionMapping mapping, 
														ActionForm form,
														HttpServletRequest request, 
														HttpServletResponse response) throws Exception {
		
		Long id = Funciones.obtenerProcesoElectoralId(request);
		
		List<VistaComparaPadronPojo> listaComparaPadron = oCNPrepararEleccion.obtenerComparacionPadron(id);
		request.setAttribute("listaComparaPadron",listaComparaPadron);
		
		return mapping.findForward("mostrarReporteComparaPadron");
	}
}